16 - Data Visualization
Answers to exercises
1.
Given the following data on the world’s cargo carrying capacity in millions of dead weight tons (dwt) for the given years, graph the relationship as a point plot. Add a linear prediction model to the graph. What is the approximate increase in the world capacity each year?
dwt <- c(2566, 3704, 4008, 5984, 7700, 8034, 8229, 7858, 8408, 8939)
year <- c(1970, 1980, 1990, 2000, 2006, 2007, 2008, 2009, 2010, 2011)
library(ggplot2)
dwt <- c(2566, 3704, 4008, 5984, 7700, 8034, 8229, 7858, 8408, 8939)
year <- c(1970, 1980, 1990, 2000, 2006, 2007, 2008, 2009, 2010, 2011)
df1 <- data.frame(year, dwt)
# ggplot
ggplot(df1,aes(year, dwt)) +
geom_point(color = 'red') +
xlab('Year') +
ylab('Millions of dead weight tons') +
ylim(0,10000)3.
Visualize in blue the number of items for each product scale.
library(ggplot2)
library(DBI)
library(RMySQL)
# connect to the database
conn <- dbConnect(RMySQL::MySQL(),"www.richardtwatson.com", dbname = "ClassicModels", user = "student", password = "student")
# Query the database and create file for use with R
d <- dbGetQuery(conn,"SELECT productScale from Products;")
# Plot the number of product lines by specifying the appropriate column name
# Internal fill color is blue
# ggplot
ggplot(d,aes(productScale)) +
geom_bar(fill = 'blue') +
xlab('Product scale') +
ylab('Frequency')5.
Create a histogram with appropriate labels for the value of orders received from the Nordic countries (Denmark, Finland, Norway, Sweden).
library(ggplot2)
library(DBI)
library(RMySQL)
# connect to the database
conn <- dbConnect(RMySQL::MySQL(),"www.richardtwatson.com", dbname = "ClassicModels", user = "student", password = "student")
# Query the database and create file for use with R
d <- dbGetQuery(conn,"SELECT country, sum(quantityOrdered*priceEach) AS orders FROM Orders, OrderDetails, Customers WHERE Orders.orderNumber = OrderDetails.orderNumber and Customers.customerNumber = Orders.customerNumber AND country IN ('Denmark','Finland', 'Norway','Sweden') GROUP BY countr
# ggplot
ggplot(d,aes(country, orders)) +
geom_col(fill = 'yellow') +
xlab('Country') +
ylab('Orders')7.
Show the customers in Japan on a Google map.
library(ggplot2)
library(DBI)
library(ggmap)
# connect to the database
conn <- dbConnect(RMySQL::MySQL(),"www.richardtwatson.com", dbname = "ClassicModels", user = "student", password = "student")
# Query the database and create file for use with R
d <- dbGetQuery(conn,"SELECT y(officeLocation) AS lon, x(officeLocation) AS lat FROM Offices;")
map <- get_googlemap('tokyo, japan',marker=d,zoom=5)
ggmap(map) + labs(x = 'Longitude', y = 'Latitude') + ggtitle('Japanese offices')9.
http://www.richardtwatson.com/data/manheim.txt, which contains details of the sales of three car models: X, Y, and Z.
9a.
Create a bar chart for sales of each model (X, Y, or Z)
library(ggplot2)
library(readr)
url <- 'http://www.richardtwatson.com/data/manheim.txt'
t <- read_delim(url, delim=',')
# ggplot
ggplot(t,aes(model)) +
geom_bar(fill = 'lightgreen')11.
Read the table http://www.richardtwatson.com/data/wealth.csv containing details of the wealth of various countries. Create histograms for each of the wealth measures. Use the list of valid colors to give a bit of color to your graphics.
library(ggplot2)
library(readr)
url <- 'http://www.richardtwatson.com/data/wealth.csv'
t <- read_delim(url, delim=',')
# ggplot
ggplot(t, aes(`GDP per capita`)) +
geom_histogram(fill='firebrick')
ggplot(t, aes(`GDP per capita`)) +
geom_histogram(fill='darkorange')
ggplot(t, aes(`GDP per capita`)) +
geom_histogram(fill='darkolivegreen')